package cn.tedu.home1ess.admin.content.controller;

import cn.tedu.common.response.JsonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@Slf4j
@RestController
@RequestMapping("/picture")
@Api(tags = "图片上传")
public class UploadController {

    @Value("${file-path}")
    private String dirPath;

    //1.(MultipartFile file) MultipartFile是用来接收上传文件的对象
    //file必须与前端<el-upload name="file">的值一样！
    @ApiOperation("图片上传功能")
    @PostMapping("upload")
    public JsonResult upload(MultipartFile file) throws IOException {
        //2.得到原始文件名 12.jpg
        String fileName=file.getOriginalFilename();
        //3.得到文件后缀名 .jpg 从"."开始截取子串
        String suffix=fileName.substring(fileName.lastIndexOf('.'));
        //4.得到唯一文件名 UUID.randomUUID()得到一个唯一的标识符(字符串)
        fileName= UUID.randomUUID()+suffix;
        SimpleDateFormat sdf=new SimpleDateFormat("/yyyy/MM/dd/");
        //6.自定义日期对象 以/开头以/结尾,注意日期MM是大写的
        String dataPath=sdf.format(new Date());
        //7.将当前日期格式化成上面的日期格式
        File dirFile=new File(dirPath+dataPath);
        if (!dirFile.exists()){
            dirFile.mkdirs();
        }
        //10.准备一个完整的路径 文件夹路径 + 日期路径 + 图片文件名
        String filePath=dirPath+dataPath+fileName;
        //11.把文件保存到指定的路径 异常抛出--看看文件系统中是否有该图片
        file.transferTo(new File(filePath));

        return JsonResult.ok(dataPath+fileName);

    }
    @ApiOperation("图片删除功能")
    @PostMapping("remove")
    public JsonResult remove(String imgUrl){
        new File(dirPath+imgUrl).delete();
        return JsonResult.ok();
    }

}
